/*
 * Copyright (c) 2009
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.dcarew.hudson.utils;

import org.eclipse.mylyn.internal.provisional.commons.ui.AbstractNotificationPopup;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;

/**
 * 
 * 
 * @author Devon Carew
 */
public class NotificationUtils
{
	
	private NotificationUtils()
	{
		
	}
	
	public static boolean isMylynAvailable()
	{
		try
		{
			return NotificationImpl.isMylynAvailable();
		}
		catch (Throwable t)
		{
			return false;
		}
	}
	
	public static void notify(Image image, String title, String message)
	{
		try
		{
			NotificationImpl.notify(image, title, message);
		}
		catch (Throwable t)
		{
			
		}
	}
}

class NotificationImpl
{
	private NotificationImpl()
	{
		
	}
	
	static boolean isMylynAvailable()
	{
		try
		{
			return AbstractNotificationPopup.class != null;
		}
		catch (Throwable t)
		{
			return false;
		}
	}
	
	static void notify(final Image image, final String title, final String message)
	{
		AbstractNotificationPopup popup = new AbstractNotificationPopup(Display.getDefault()) {
			protected String getPopupShellTitle() {
				return title;
			}
			
			protected Image getPopupShellImage(int maximumHeight) {
				return image;
			}
			
			protected void createContentArea(Composite parent) {
				Label label = new Label(parent, SWT.NONE);
				label.setText(message);
			}
		};
		
		popup.setBlockOnOpen(false);
		popup.setFadingEnabled(true);
		popup.open();
	}
}
